﻿using System;
using System.Threading.Tasks;

namespace SocialApi.Core
{
    /// <summary>
    /// Методы для разбора полученного кода от сервера и отправка запрса для получения токена доступа
    /// </summary>
    public interface IParser
    {
        /// <summary>
        /// Парсинг URL с кодом и асинхронное получение токена доступа
        /// </summary>
        /// <param name="url">URL с кодом</param>
        Task ParseCallbakUrlAsync(string url);

        /// <summary>
        /// Парсинг URL ответа сервера и асинхронное получение токена доступа
        /// </summary>
        /// <param name="url">URL ответа сервера</param>
        Task ParseCallbakUrlAsync(Uri url);

        /// <summary>
        /// Парсинг URL с кодом и получение токена доступа
        /// </summary>
        /// <param name="url">URL с кодом</param>
        void ParseCallbakUrl(string url);

        /// <summary>
        /// Парсинг URL ответа сервера и получение токена доступа
        /// </summary>
        /// <param name="url">URL ответа сервера</param>
        void ParseCallbakUrl(Uri url);

        /// <summary>
        /// Событие возникает после успешного получения токена доступа
        /// </summary>
        event EventHandler ParseCallbakUrlComplete;

        /// <summary>
        /// Событие возникает при неудачном получении токена доступа
        /// </summary>
        event EventHandler ParseCallbakUrlFalied;
    }
}